﻿namespace MicroCloud.Message.Events
{
    //消息
    #region "消息事件数据"
    /// <summary>
    /// 消息事件数据
    /// </summary>
    public class MessageEventData : HubEventDataBase
    {
        #region "属性"
        #region "获取或设置 操作类型"
        /// <summary>
        /// 获取或设置 操作类型
        /// </summary>
        public OperateType OperateType { get; set; }
        #endregion
        #region "获取或设置 消息实体集合"
        /// <summary>
        /// 获取或设置 消息实体集合
        /// </summary>
        public List<MessageEntity> Messages { get; set; } = new List<MessageEntity>();
        #endregion
        #region "获取或设置 消息接收者实体集合"
        /// <summary>
        /// 获取或设置 消息接收者实体集合
        /// </summary>
        public List<MessageReceiver> MessageReceivers { get; set; } = new List<MessageReceiver>();
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个消息事件数据的新实例"
        /// <summary>
        /// 初始化一个消息事件数据的新实例
        /// </summary>
        /// <param name="clients">调用方客户端对象</param>
        /// <param name="groups">组管理器</param>
        public MessageEventData(IHubClients clients, IGroupManager groups)
            : base(clients, groups)
        { }
        #endregion
        #region "初始化一个消息事件数据的新实例"
        /// <summary>
        /// 初始化一个消息事件数据的新实例
        /// </summary>
        /// <param name="callerClients">中心调用方客户端对象</param>
        /// <param name="callerContext">中心调用方上下文对象</param>
        /// <param name="groups">组管理器</param>
        public MessageEventData(IHubCallerClients callerClients, HubCallerContext callerContext, IGroupManager groups)
            : base(callerClients, callerContext, groups)
        { }
        #endregion

        #endregion

    }
    #endregion
    #region "消息发送事件数据"
    /// <summary>
    /// 消息发送事件数据
    /// </summary>
    public class MessageSendEventData : HubEventDataBase
    {
        #region "属性"
        #region "获取或设置 消息实体集合"
        /// <summary>
        /// 获取或设置 消息实体集合
        /// </summary>
        public List<MessageEntity> Messages { get; set; } = new List<MessageEntity>();
        #endregion
        #region "获取或设置 消息接收者实体集合"
        /// <summary>
        /// 获取或设置 消息接收者实体集合
        /// </summary>
        public List<MessageReceiver> MessageReceivers { get; set; } = new List<MessageReceiver>();
        #endregion
        #region "获取或设置 消息接收用户实体集合"
        /// <summary>
        /// 获取或设置 消息接收用户实体集合
        /// </summary>
        public List<User> MessageReceiverUsers { get; set; } = new List<User>();
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个消息发送事件数据的新实例"
        /// <summary>
        /// 初始化一个消息发送事件数据的新实例
        /// </summary>
        /// <param name="clients">调用方客户端对象</param>
        /// <param name="groups">组管理器</param>
        public MessageSendEventData(IHubClients clients, IGroupManager groups)
            : base(clients, groups)
        { }
        #endregion
        #region "初始化一个消息发送事件数据的新实例"
        /// <summary>
        /// 初始化一个消息发送事件数据的新实例
        /// </summary>
        /// <param name="callerClients">中心调用方客户端对象</param>
        /// <param name="callerContext">中心调用方上下文对象</param>
        /// <param name="groups">组管理器</param>
        public MessageSendEventData(IHubCallerClients callerClients, HubCallerContext callerContext, IGroupManager groups)
            : base(callerClients, callerContext, groups)
        { }
        #endregion

        #endregion

    }
    #endregion
    #region "消息阅读事件数据"
    /// <summary>
    /// 消息阅读事件数据
    /// </summary>
    public class MessageReadEventData : HubEventDataBase
    {
        #region "属性"
        #region "获取或设置 消息实体集合"
        /// <summary>
        /// 获取或设置 消息实体集合
        /// </summary>
        public List<MessageEntity> Messages { get; set; } = new List<MessageEntity>();
        #endregion
        #region "获取或设置 消息接收者实体集合"
        /// <summary>
        /// 获取或设置 消息接收者实体集合
        /// </summary>
        public List<MessageReceiver> MessageReceivers { get; set; } = new List<MessageReceiver>();
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个消息阅读事件数据的新实例"
        /// <summary>
        /// 初始化一个消息阅读事件数据的新实例
        /// </summary>
        /// <param name="clients">调用方客户端对象</param>
        /// <param name="groups">组管理器</param>
        public MessageReadEventData(IHubClients clients, IGroupManager groups)
            : base(clients, groups)
        { }
        #endregion
        #region "初始化一个消息阅读事件数据的新实例"
        /// <summary>
        /// 初始化一个消息阅读事件数据的新实例
        /// </summary>
        /// <param name="callerClients">中心调用方客户端对象</param>
        /// <param name="callerContext">中心调用方上下文对象</param>
        /// <param name="groups">组管理器</param>
        public MessageReadEventData(IHubCallerClients callerClients, HubCallerContext callerContext, IGroupManager groups)
            : base(callerClients, callerContext, groups)
        { }
        #endregion

        #endregion

    }
    #endregion
    #region "消息接受者删除事件数据"
    /// <summary>
    /// 消息接受者删除事件数据
    /// </summary>
    public class MessageReceiverDeleteEventData : HubEventDataBase
    {
        #region "属性"
        #region "获取或设置 消息实体集合"
        /// <summary>
        /// 获取或设置 消息实体集合
        /// </summary>
        public List<MessageEntity> Messages { get; set; } = new List<MessageEntity>();
        #endregion
        #region "获取或设置 消息接收者实体集合"
        /// <summary>
        /// 获取或设置 消息接收者实体集合
        /// </summary>
        public List<MessageReceiver> MessageReceivers { get; set; } = new List<MessageReceiver>();
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个消息接受者删除事件数据的新实例"
        /// <summary>
        /// 初始化一个消息接受者删除事件数据的新实例
        /// </summary>
        /// <param name="clients">调用方客户端对象</param>
        /// <param name="groups">组管理器</param>
        public MessageReceiverDeleteEventData(IHubClients clients, IGroupManager groups)
            : base(clients, groups)
        { }
        #endregion
        #region "初始化一个消息接受者删除事件数据的新实例"
        /// <summary>
        /// 初始化一个消息接受者删除事件数据的新实例
        /// </summary>
        /// <param name="callerClients">中心调用方客户端对象</param>
        /// <param name="callerContext">中心调用方上下文对象</param>
        /// <param name="groups">组管理器</param>
        public MessageReceiverDeleteEventData(IHubCallerClients callerClients, HubCallerContext callerContext, IGroupManager groups)
            : base(callerClients, callerContext, groups)
        { }
        #endregion

        #endregion

    }
    #endregion

    //模板消息
    #region "模板消息事件数据"
    /// <summary>
    /// 模板消息事件数据
    /// </summary>
    public class TemplateMessageEventData : HubEventDataBase
    {
        #region "属性"
        #region "获取或设置 操作类型"
        /// <summary>
        /// 获取或设置 操作类型
        /// </summary>
        public OperateType OperateType { get; set; }
        #endregion
        #region "获取或设置 模板消息实体集合"
        /// <summary>
        /// 获取或设置 模板消息实体集合
        /// </summary>
        public List<TemplateMessage> TemplateMessages { get; set; } = new List<TemplateMessage>();
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个模板消息事件数据的新实例"
        /// <summary>
        /// 初始化一个模板消息事件数据的新实例
        /// </summary>
        /// <param name="clients">调用方客户端对象</param>
        /// <param name="groups">组管理器</param>
        public TemplateMessageEventData(IHubClients clients, IGroupManager groups)
            : base(clients, groups)
        { }
        #endregion
        #region "初始化一个模板消息事件数据的新实例"
        /// <summary>
        /// 初始化一个模板消息事件数据的新实例
        /// </summary>
        /// <param name="callerClients">中心调用方客户端对象</param>
        /// <param name="callerContext">中心调用方上下文对象</param>
        /// <param name="groups">组管理器</param>
        public TemplateMessageEventData(IHubCallerClients callerClients, HubCallerContext callerContext, IGroupManager groups)
            : base(callerClients, callerContext, groups)
        { }
        #endregion

        #endregion

    }
    #endregion

}
